package Iterator_pattern.ex2;

import java.util.List;

/**
 * @author 申书航
 * @version 1.0
 *
 * 该接口定义了页面迭代器的基本操作，用于对分页数据进行遍历。
 */
public interface PageIterator<T> {

    /**
     * 获取当前页面的上一个页面数据。
     *
     * @return 上一个页面的数据列表
     */
    List<T> previous();

    /**
     * 获取当前页面的数据。
     *
     * @return 当前页面的数据列表
     */
    List<T> curr();

    /**
     * 获取下一个页面的数据。
     *
     * @return 下一个页面的数据列表
     */
    List<T> next();

    /**
     * 跳转到第一页的数据。
     *
     * @return 第一页的数据列表
     */
    List<T> goFirst();

    /**
     * 跳转到指定索引页的数据。
     *
     * @param pageIndex 页码索引
     * @return 指定页的数据列表
     */
    List<T> goPage(int pageIndex);

    /**
     * 跳转到最后一页的数据。
     *
     * @return 最后一页的数据列表
     */
    List<T> goLast();

    /**
     * 获取总页数。
     *
     * @return 总的页数
     */
    int pages();

    /**
     * 设置每页显示的数据条目数量。
     *
     * @param size 每页的大小
     */
    void setPageSize(int size);
}

